package com.ruoyi.app.controller;

import com.ruoyi.app.domain.AppActivities;
import com.ruoyi.app.domain.AppBanner;
import com.ruoyi.app.domain.AppNotice;
import com.ruoyi.app.domain.AppOrganization;
import com.ruoyi.app.domain.AppUsers;
import com.ruoyi.app.service.IAppActivitiesService;
import com.ruoyi.app.service.IAppBannerService;
import com.ruoyi.app.service.IAppNoticeService;
import com.ruoyi.app.service.IAppOrganizationService;
import com.ruoyi.app.service.IAppUsersService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.github.pagehelper.PageHelper;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


/**
 * author:王磊
 *
 */
@RestController
@RequestMapping("/app/users")
public class AppBaseController1 extends BaseController {
//    @Autowired
//    private IAppUsersService appUsersService;
//
//    @Autowired
//    private IAppActivitiesService appActivitiesService;
//
//    @Autowired
//    private IAppOrganizationService appOrganizationService;
//
//    @Autowired
//    private IAppBannerService appBannerService;
//
//    @Autowired
//    private IAppNoticeService appNoticeService;
//
//
//    /**
//     * 获取六个校友信息
//     */
//    @GetMapping("/Card6")
//    public TableDataInfo getCard6Alumni()
//    {
//        // 设置分页，每页6条
//        PageHelper.startPage(1, 6);
//        AppUsers appUsers = new AppUsers();
//        // 只查询已认证的校友
//        appUsers.setUserType("alumni");
//        appUsers.setAuthStatus(2); // 2=已认证
//        List<AppUsers> list = appUsersService.selectAppUsersList(appUsers);
//        return getDataTable(list);
//    }
//
//    /**
//     * 获取近三个月的三条活动
//     */
//    @GetMapping("/Activity3")
//    public TableDataInfo getActivity3()
//    {
//        // 计算三个月前的日期
//        Calendar calendar = Calendar.getInstance();
//        Date endDate = calendar.getTime();
//        calendar.add(Calendar.MONTH, -3);
//        Date startDate = calendar.getTime();
//
//        // 先查询最近50条活动（按创建时间或更新时间倒序），避免查询所有数据
//        // 然后在内存中按开始时间过滤，这样可以提高性能
//        PageHelper.startPage(1, 50, "created_at desc");
//        AppActivities appActivities = new AppActivities();
//        List<AppActivities> recentActivities = appActivitiesService.selectAppActivitiesList(appActivities);
//
//        // 过滤出近三个月的活动，并按开始时间倒序排序，取前3条
//        List<AppActivities> filteredList = recentActivities.stream()
//                .filter(activity -> {
//                    Date startTime = activity.getStartTime();
//                    if (startTime == null) {
//                        return false;
//                    }
//                    // 活动开始时间在三个月前到现在的范围内
//                    return !startTime.before(startDate) && !startTime.after(endDate);
//                })
//                .sorted((a, b) -> {
//                    // 按开始时间倒序排序
//                    Date timeA = a.getStartTime();
//                    Date timeB = b.getStartTime();
//                    if (timeA == null && timeB == null) return 0;
//                    if (timeA == null) return 1;
//                    if (timeB == null) return -1;
//                    return timeB.compareTo(timeA);
//                })
//                .limit(3)
//                .collect(java.util.stream.Collectors.toList());
//
//        return getDataTable(filteredList);
//    }
//
//    /**
//     * 获取四个校友组织信息
//     */
//    @GetMapping("/Organization4")
//    public TableDataInfo getOrganization4()
//    {
//        // 设置分页，每页4条
//        PageHelper.startPage(1, 4);
//        AppOrganization appOrganization = new AppOrganization();
//        List<AppOrganization> list = appOrganizationService.selectAppOrganizationList(appOrganization);
//        return getDataTable(list);
//    }
//
//    /**
//     * 获取轮播图列表
//     * 前端期望格式: [{id, type, title, name, text, url}]
//     */
//    @GetMapping("/Banner")
//    public AjaxResult getBannerList()
//    {
//        AppBanner appBanner = new AppBanner();
//        // 只查询状态为1（显示）的轮播图
//        appBanner.setStatus(1);
//        List<AppBanner> bannerList = appBannerService.selectAppBannerList(appBanner);
//
//        // 转换为前端需要的格式
//        List<Map<String, Object>> result = bannerList.stream()
//                .sorted((a, b) -> {
//                    // 按sort字段排序，sort越小越靠前
//                    Long sortA = a.getSort() != null ? a.getSort() : Long.MAX_VALUE;
//                    Long sortB = b.getSort() != null ? b.getSort() : Long.MAX_VALUE;
//                    return sortA.compareTo(sortB);
//                })
//                .map(banner -> {
//                    Map<String, Object> item = new HashMap<>();
//                    item.put("id", banner.getId());
//                    item.put("type", "image");
//                    item.put("title", banner.getTitle() != null ? banner.getTitle() : "");
//                    item.put("name", "");
//                    item.put("text", "");
//                    item.put("url", banner.getImageUrl() != null ? banner.getImageUrl() : "");
//                    return item;
//                })
//                .collect(Collectors.toList());
//
//        return AjaxResult.success(result);
//    }
//
//    /**
//     * 获取公告列表
//     * 前端期望格式: 字符串数组，如 ["公告1", "公告2"]
//     */
//    @GetMapping("/Notice")
//    public AjaxResult getNoticeList()
//    {
//        AppNotice appNotice = new AppNotice();
//        // 只查询状态为1（显示）的公告
//        appNotice.setStatus(1);
//        List<AppNotice> noticeList = appNoticeService.selectAppNoticeList(appNotice);
//
//        // 转换为字符串数组，只取title字段
//        List<String> result = noticeList.stream()
//                .filter(notice -> notice.getTitle() != null && !notice.getTitle().isEmpty())
//                .map(AppNotice::getTitle)
//                .collect(Collectors.toList());
//
//        return AjaxResult.success(result);
//    }

}
